<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script>
    /* 
    基本数据类型
      ● number
      ● string
      ● boolean
      ● undefined
      ● null
      ● symbol 常用于对象上添加唯一属性
      ● bigint 主要用于管理很大或很小的数据（超过 Number.MAX_SAFE_INTEGER 或小于 Number.MIN_SAFE_INTEGER）
    
    引用/对象数据类型
        Object
        Array
        Function
        Map
        Set
    */
    // symbol 
    // 属性名: 字符串/symbol
    var s1 = Symbol('name')
    var s2 = Symbol('name') // 每次调用产生一个新的symbol值
    const obj = {
      n: 'abc',
      [s1]: 123
    }
    obj.n = 'abc'
    obj[s2] = 234
    obj[s1] = 345
    console.log(obj)
    
    // bigint   存大整数, 用于银行/金融类项目中
    const n1 = Number.MAX_SAFE_INTEGER
    const n2 = n1 + 4 // 计算的结果不正确
    console.log(n1, n2, n2-n1)  

    const b1 = BigInt(Number.MAX_SAFE_INTEGER)
    const b2 = b1 + 4n
    console.log(b1, b2, b2-b1)

  </script>
</body>
</html>